
package Modelo;

import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.swing.table.DefaultTableModel;

import Base.Conexion4MySql;


public class Adm5CursosConcretos 
{

	static private Adm5CursosConcretos instancia = null;
	
	
	static public Adm5CursosConcretos getInstancia() 
	{
		if( instancia == null)
		{
			instancia = new Adm5CursosConcretos();
		}
		return instancia;
	}
	
	/*
	* Metodos del singleton.
	*/
	
	public String metodo() {
	return "Adm3CursosConcretos ya instanciado";
	}
	
	public int ingresarCursoConcreto(CursoConcreto c)
	{
		String IDcc = c.DameIDcc();
		String CodCM= c.DameCodCM();
		//CursoMaestro CM = c.DameCM();
		String FFI = c.DameFFI();
		String FFF = c.DameFFF();
		Integer CantDeClases = c.DameCantClases();
		Integer HsXClase = c.DameHsxClase();
		//Integer TTHsDeClase = CantDeClases * HsXClase;
		Integer Vacantes = c.DameVacantes();
		Integer CantMin = c.DameCantMin();
		String diasClase = c.DameDiasDeClase();// reempl x tabla
		String horario = c.DameHorario();//reempl x tabla
		String s = c.DameSala();
		String i = c.DameInstructor();
		Integer E = c.DameEstado();
		//String E = c.DameEstado();
	

		
		String sentenciaSql="INSERT INTO `formar`.`cursosconcretos` " +
				"(`IDcc`, `CodCM`, `FFI`, `FFF`, `CantDeClases`, `HsxClase`, `" +
				"Vacantes`, `CantMin`, `Horario`, `DiasClase`, `Sala`, `Instructor`)" +
				" VALUES ('"+IDcc+"', '"+CodCM+"', '"+FFI+"', '"+FFF+
				"', '"+CantDeClases+"', '"+HsXClase+"', '"+Vacantes+"', '"+CantMin+
				"', '"+horario+"', '"+diasClase+"', '"+s+"', '"+i+"');";

		
		System.out.println("sentencia = "+sentenciaSql);
		
		Conexion4MySql conexion = Conexion4MySql.getInstancia();
		
		int a = conexion.insertarPrueba(sentenciaSql);
			
		//tabla horario
		int bb=ingresarHorario(c);
		
		System.out.println("bb (retorno del insert) ="+ bb);
		System.out.println("a (retorno del insert) ="+ a);
		
		return a;
		
	}
	
	
	public ArrayList<String> dameCM()
	{
		ArrayList<String> resultado = new ArrayList<String>();
			
		
		ResultSet  r=Conexion4MySql.getInstancia().listaCM();
		System.out.println(r);
		try {
			while (r.next())
			{
				String r1=r.getString("Nombre");
				System.out.println(r1);
				resultado.add(r1);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			r.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return resultado;
	}
	
	
	public ArrayList<String> dameCodCM()
	{
		ArrayList<String> resultado = new ArrayList<String>();
			
		
		ResultSet  r=Conexion4MySql.getInstancia().listaCM();
		System.out.println(r);
		try {
			while (r.next())
			{
				String r1=r.getString("CodCM");
				System.out.println(r1);
				resultado.add(r1);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			r.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return resultado;
	}
	
	
	public ArrayList<String> dameCMCodCM()
	{
		ArrayList<String> resultado = new ArrayList<String>();
			
		
		ResultSet  r=Conexion4MySql.getInstancia().listaCM();
		System.out.println(r);
		try {
			while (r.next())
			{
				String r1=r.getString("Nombre");
				String r2=r.getString("CodCM");
				r2=r2+"  ";
				//r2 = r2.substring(0,3);
				String R9=r2+" - "+r1;
				System.out.println(R9);
				resultado.add(R9);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			r.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return resultado;
	}
	//1009
	public ArrayList<String> dameCMCodCMxArea(String a) //1009 la llevo al adm_cm
	{
		ArrayList<String> resultado = new ArrayList<String>();
			
		
		ResultSet  r=Conexion4MySql.getInstancia().listaCMxArea(a);
		System.out.println(r);
		try {
			while (r.next())
			{
				String r1=r.getString("Nombre");
				String r2=r.getString("CodCM");
				r2=r2+"  ";
				//r2 = r2.substring(0,3);
				String R9=r2+" - "+r1;
				System.out.println(R9);
				resultado.add(R9);
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			r.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return resultado;
	}
	
	//agre240613
	public ResultSet  dameCC3()
	{
		//ArrayList<String[]> resultado = new ArrayList<String[]>();
		String c="SELECT  CodCM, IDcc, FFI, FFF, CantDeClases,HsXClase,Vacantes,CantMin,DiasClase,Horario,Sala,Instructor,CC.Estado, CCE.CCEstado FROM formar.CursosConcretos as CC, CCEstado as CCE WHERE CC.estado=CCE.ID;";	
		//String c="SELECT  CodCM, IDcc, FFI, FFF, CantDeClases,HsXClase,Vacantes,CantMin,DiasClase,Horario,Sala,Instructor,Estado FROM formar.CursosConcretos;";	
		
		ResultSet  r=Conexion4MySql.getInstancia().listaCMconsulta2(c);
		System.out.println("dameCC3 - "+r);
		System.out.println( c);
		
		/*try {
			r.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}*/
		return r;
	}
	//agre050913
	public ResultSet  dameCC3xEstado(int e)	{
		String c="SELECT  CodCM, IDcc, FFI, FFF, CantDeClases,HsXClase,Vacantes,CantMin,DiasClase,Horario,Sala,Instructor,CC.Estado, CCE.CCEstado FROM formar.CursosConcretos as CC, CCEstado as CCE WHERE CC.estado=CCE.ID and CC.estado = '"+e+"';";//  and  WHERE `CodCM`='"+CodCM+"' and  `IDcc`='"+IDcc+"';";   
		
		//0409String c="SELECT  CodCM, IDcc, FFI, FFF, CantDeClases,HsXClase,Vacantes,CantMin,DiasClase,Horario,Sala,Instructor,CC.Estado, CCE.CCEstado FROM formar.CursosConcretos as CC, CCEstado as CCE WHERE CC.estado=CCE.ID;";	
		//String c="SELECT  CodCM, IDcc, FFI, FFF, CantDeClases,HsXClase,Vacantes,CantMin,DiasClase,Horario,Sala,Instructor,Estado FROM formar.CursosConcretos;";	
		
		ResultSet  r=Conexion4MySql.getInstancia().listaCMconsulta2(c);
		System.out.println("dameCC3 - "+r);
		System.out.println( c);
		
		
		return r;
	}
	//agre240613
	public int ModifCursoConcreto(CursoConcreto c)
	{
		String CodCM=c.DameCodCM();
		String IDcc= c.DameIDcc();
		//String IDcc=c.DameCod();//.toString();
		String FFI= c.DameFFI();
		String FFF= c.DameFFF();
		String CantDeClases = c.DameCantClases().toString();
		String HsXClase = c.DameHsxClase().toString();
		//Integer TTHsDeClase = CantDeClases * HsXClase;
		String Vacantes = c.DameVacantes().toString();
		String CantMin = c.DameCantMin().toString();
		String diasClase = c.DameDiasDeClase();
		String horario = c.DameHorario();
		String s = c.DameSala();
		String i = c.DameInstructor();
		Integer E = c.DameEstado();
		//String E = c.DameEstado();
		
		
		
		String sentenciaSql="UPDATE `formar`.`cursosconcretos` SET `FFI`='"+FFI+"', `FFF`='"+FFF+"', `CantDeClases`='"+CantDeClases+"', `HsXClase`='"+HsXClase+"', `vacantes`='"+Vacantes+"', `CantMin`='"+CantMin+"', `DiasClase`='"+diasClase+"', `Horario`='"+horario+"', `Sala`='"+s+"', `Instructor`='"+i+"', `Estado`='"+E+"' WHERE `CodCM`='"+CodCM+"' and  `IDcc`='"+IDcc+"';";   
		//                   UPDATE `formar`.`cursosconcretos` SET `FFF`='2023-05-30', `CantDeClases`='151', `Instructor`='11267260- Garcia Maria'                                                                                                                                                                                 WHERE `CodCM`='L'                    and`IDcc`='100';

		System.out.println("sentencia = "+sentenciaSql);
		
		Conexion4MySql conexion = Conexion4MySql.getInstancia();
		
		int a = conexion.insertarPrueba(sentenciaSql);
		
		
		return a;
	}
	
	public int ModifHorario(ArrayList <Integer> hm){
		int b=0;
		int bb=0;
		int i=0;
		
		while (i<hm.size()){
			String sentenciaSqlH1="DELETE FROM `formar`.`horaCC`  WHERE `ID`='"+hm.get(i)+"';";
			System.out.println("sentencia = "+sentenciaSqlH1);
			System.out.println("voy a borrar Horario ID"+hm.get(i));
			Conexion4MySql conexion = Conexion4MySql.getInstancia();
			b = conexion.insertarPrueba(sentenciaSqlH1);
			System.out.println("Borrado Horario ID"+hm.get(i));
			i=i+1;
		}
		
		
		return b;
	}
	
	//tabla horario
	public int ingresarHorario(CursoConcreto cc){
		
		//tabla horario
		DefaultTableModel t=cc.DameHH();
		Integer row=0;
		Integer b=0;
		Integer bb=0;
		while (row<t.getRowCount()){
			String sDia= (String) t.getValueAt(row, 0);
			String sHHI = (String) t.getValueAt(row, 1);
			String sHHF = (String) t.getValueAt(row, 2);
			String CodCM= cc.DameCodCM();
			String IDcc= cc.DameIDcc();
			//String IDcc= cc.DameCod();
			System.out.println(CodCM+IDcc+sDia+sHHI+sHHF);
			
			String sentenciaSqlH="INSERT INTO `formar`.`horacc` " +
			"(`CodCM`,`IDcc`, `Dia`,  `HHI`, `HHF`)" +
			" VALUES ('"+CodCM+"', '"+IDcc+"', '"+sDia+"', '"+sHHI+"', '"+sHHF+"');";
			System.out.println("sentencia = "+sentenciaSqlH);
			
			Conexion4MySql  conexion = Conexion4MySql.getInstancia();
			//Conexion4MySql conexion = Conexion4MySql.getInstancia();
			
			 b = conexion.insertarPrueba(sentenciaSqlH);
			System.out.println("retorno b = "+b);
			
			row=row+1;
			bb=bb+b;
		}
		return bb;
	}
		
	public ResultSet  dameHorario(CursoConcreto ccH)//0507
	{
		String sCodCM= ccH.DameCodCM();
		String sIDcc = ccH.DameIDcc();
		//ArrayList<String[]> resultado = new ArrayList<String[]>();
		String c="SELECT  ID,CodCM, IDcc,Dia, HHI, HHF FROM formar.horaCC WHERE `CodCM`='"+sCodCM+"' and  `IDcc`='"+sIDcc+"';"; 
		//String c="SELECT  ID,CodCM, IDcc,Dia, HHI, HHF FROM formar.horaCC;";	
		//+"' WHERE `CodCM`='"+CodCM+"' and  `IDcc`='"+IDcc+"';";  
		ResultSet  r=Conexion4MySql.getInstancia().listaCMconsulta2(c);
		System.out.println("dameHorario - "+r);
		System.out.println( c);
		
		/*try {
			r.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}*/
		return r;
	}
//2508
public int preInscripcion(Integer e, Integer alu, String CM, String CC){
		
			int b=0;
			System.out.println("Adm5CC preInscripcion"+e+" "+alu+" "+CM+" "+CC);
			
			String sentenciaSqlH="INSERT INTO `formar`.`inscripciones` " +
			"(`Estado`,`Alumno`, `CM`,  `CC`)" +
			" VALUES ('"+e+"', '"+alu+"', '"+CM+"', '"+CC+"');";
			System.out.println("sentencia = "+sentenciaSqlH);
			
			Conexion4MySql  conexion = Conexion4MySql.getInstancia();
			//Conexion4MySql conexion = Conexion4MySql.getInstancia();
			
			 b = conexion.insertarPrueba(sentenciaSqlH);
			System.out.println("retorno b = "+b);
			
			
		return b;
	}
//1510
public int preInscripcionC(Integer ID){
	
	int b=0;
	System.out.println("Adm5CC preInscripcion"+ID);
	
	String sentenciaSql="UPDATE `formar`.`inscripciones` SET `FFR`=current_timestamp  ,`Estado`=1 WHERE `IDi`='"+ID+"';";
	
	System.out.println("sentencia = "+sentenciaSql);
	
	Conexion4MySql  conexion = Conexion4MySql.getInstancia();
	//Conexion4MySql conexion = Conexion4MySql.getInstancia();
	
	 b = conexion.insertarPrueba(sentenciaSql);
	System.out.println("retorno b = "+b);
	
	
return b;
}

public ResultSet incripcionConsulta(){ //2808
	//1209String c="SELECT i.alumno, a.nombre, a.apellido,a.ID, a.DNI, i.cm, i.cc, cm.nombre as curso, e.estado, i.IDi "+
	String c="SELECT i.alumno, a.nombre, a.apellido,a.ID, a.DNI, i.cm, i.cc, cm.nombre as curso, e.estado, e.ID as IDestado, i.IDi "+
	"FROM formar.inscripciones as i, formar.inscrestado as e, "+
	"formar.alumnos as a, formar.cursosmaestros as cm "+
	"WHERE i.estado=e.ID AND i.alumno=a.ID AND cm.CodCM = i.cm;";
	//String c="SELECT  ID,CodCM, IDcc,Dia, HHI, HHF FROM formar.horaCC WHERE `CodCM`='"+sCodCM+"' and  `IDcc`='"+sIDcc+"';"; 
	System.out.println("sentencia = "+c);
	ResultSet  r=Conexion4MySql.getInstancia().listaCMconsulta2(c);
	
	return r;
}
public ResultSet inscripcionConsultaXCC(String CM, String CC){ //0809
	System.out.println("CM = "+CM+"  CC = "+CC);
	String c="SELECT i.alumno, a.nombre, a.apellido,a.ID, a.DNI, i.cm, i.cc, cm.nombre as curso, e.estado, e.ID as IDestado, i.IDi "+
	"FROM formar.inscripciones as i, formar.inscrestado as e, "+
	"formar.alumnos as a, formar.cursosmaestros as cm "+
	"WHERE i.estado=e.ID AND i.alumno=a.ID AND cm.CodCM = i.cm AND (i.cm ='"+CM+"' AND i.cc ='"+CC+"');";
	//"WHERE i.estado=e.ID AND i.alumno=a.ID AND cm.CodCM = i.cm AND (i.cm =`CM`AND i.cc = `CC`);";
	//String c="SELECT  ID,CodCM, IDcc,Dia, HHI, HHF FROM formar.horaCC WHERE `CodCM`='"+sCodCM+"' and  `IDcc`='"+sIDcc+"';"; 
	System.out.println("sentencia xcc = "+c);
	ResultSet  r=Conexion4MySql.getInstancia().listaCMconsulta2(c);
	
	return r;
}
public ResultSet incripcionConsultaXAlumno(String s){ //0609 falta seguir si es necesario
	
	String c="SELECT i.alumno, a.nombre, a.apellido,a.ID, a.DNI, i.cm, i.cc, cm.nombre as curso, e.estado, i.IDi "+
	"FROM formar.inscripciones as i, formar.inscrestado as e, "+
	"formar.alumnos as a, formar.cursosmaestros as cm "+
	"WHERE i.estado=e.ID AND i.alumno=a.ID AND cm.CodCM = i.cm;";
	//String c="SELECT  ID,CodCM, IDcc,Dia, HHI, HHF FROM formar.horaCC WHERE `CodCM`='"+sCodCM+"' and  `IDcc`='"+sIDcc+"';"; 
	System.out.println("sentencia = "+c);
	ResultSet  r=Conexion4MySql.getInstancia().listaCMconsulta2(c);
	
	return r;
}

public int confirmarInscripcion(Integer e){
	
	int b=0;
	System.out.println("Adm5CC confirmarInscripcion"+e);
	
	String sentenciaSql="UPDATE `formar`.`inscripciones` SET `FFR`=current_timestamp  ,`Estado`=3 WHERE `IDi`='"+e+"';";
	
	
	
	System.out.println("sentencia = "+sentenciaSql);
	
	Conexion4MySql  conexion = Conexion4MySql.getInstancia();
	//Conexion4MySql conexion = Conexion4MySql.getInstancia();
	
	 b = conexion.insertarPrueba(sentenciaSql);
	System.out.println("retorno b = "+b);
	
	
return b;
}

public int cancelarInscripcion(Integer e){
	
	int b=0;
	System.out.println("Adm5CC confirmarInscripcion"+e);
	
	String sentenciaSql="UPDATE `formar`.`inscripciones` SET `FFR`=current_timestamp  ,`Estado`=9 WHERE `IDi`='"+e+"';";
	
	
	
	System.out.println("sentencia = "+sentenciaSql);
	
	Conexion4MySql  conexion = Conexion4MySql.getInstancia();
	//Conexion4MySql conexion = Conexion4MySql.getInstancia();
	
	 b = conexion.insertarPrueba(sentenciaSql);
	System.out.println("retorno b = "+b);
	
	
return b;
}


public int cantAluInscriptos1(String CM, String CC){ //0309

	int z=0;
	String c="SELECT COUNT(*) as cant FROM formar.inscripciones WHERE (`Estado`=1 OR `Estado`=3) and (`CM`='"+CM+"' and `CC`='"+CC+"');";	
	//String c="SELECT COUNT(*) as cant FROM formar.inscripciones WHERE `Estado`=1 OR `Estado`=3 ;";
	//String c="SELECT COUNT(*) as cant FROM formar.inscripciones WHERE `Estado`=1 OR `Estado`=3 and `CM`='"+CM+"CC='"+CC+"';";	
	
	ResultSet  r=Conexion4MySql.getInstancia().listaCMconsulta2(c);
	System.out.println(r);
	try {
		while (r.next())
		{
			z=r.getInt("cant");
			System.out.println("resultado z= " +z);
			
		}
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	try {
		r.close();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	return z;
}

public int cerrarInscripcion(Integer e,  String CM, String CC){
	
	int b=0;
	System.out.println("Adm5CC cerrarInscripcion"+e+" "+CM+" "+CC);
	
	String sentenciaSql="UPDATE `formar`.`cursosconcretos` SET `Estado`='"+e+"' WHERE `CodCM`='"+CM+"' and  `IDcc`='"+CC+"';";   
/*	String sentenciaSqlH="INSERT INTO `formar`.`inscripciones` " +
	"(`Estado`,`Alumno`, `CM`,  `CC`)" +
	" VALUES ('"+e+"', '"+alu+"', '"+CM+"', '"+CC+"');";*/
	System.out.println("sentencia = "+sentenciaSql);
	
	Conexion4MySql  conexion = Conexion4MySql.getInstancia();
	//Conexion4MySql conexion = Conexion4MySql.getInstancia();
	
	 b = conexion.insertarPrueba(sentenciaSql);
	System.out.println("retorno b = "+b);
	
	
return b;
}
public int dameEstado(String CM, String CC){//1210
	int estado = 0 ;
	
	String c="SELECT  Estado "+ 
	//String c="SELECT  CC.Estado, CCE.CCEstado"+ 
	"FROM formar.CursosConcretos  "+
	//"FROM formar.CursosConcretos as CC, CCEstado as CCE "+ 
	"WHERE (`CodCM`='"+CM+"' and `IDcc`='"+CC+"');";	
	//"WHERE (CC.estado=CCE.ID) and (`CC.CodCM`='"+CM+"' and `CC.IDcc`='"+CC+"');";
	
	System.out.println("sentencia = "+c);
	ResultSet  r=Conexion4MySql.getInstancia().listaCMconsulta2(c);
	
	try {
		while (r.next())
		{
			estado=r.getInt("Estado");
			//estado=r.getInt("Estado")+"-"+r.getInt("CCEstado");
			System.out.println("Estado del CC elegido = " +estado);
			
		}
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	try {
		r.close();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	
	return estado;
	
}

public int estadoInscripcion(String CM, String CC, int alu){ //1510

	int z=0;
	String c="SELECT Estado FROM formar.inscripciones WHERE (`Alumno`="+alu+") and (`CM`='"+CM+"' and `CC`='"+CC+"');";	
	
	ResultSet  r=Conexion4MySql.getInstancia().listaCMconsulta2(c);
	System.out.println(r);
	try {
		while (r.next())
		{
			z=r.getInt("Estado");
			System.out.println("Alumno "+ alu+"Curso "+CM +"-"+CC+" Estado z= " +z);
			
		}
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	try {
		r.close();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	return z;
}
public int dameIDInscripcion(String CM, String CC, int alu){ //1510

	int z=0;
	String c="SELECT IDi FROM formar.inscripciones WHERE (`Alumno`="+alu+") and (`CM`='"+CM+"' and `CC`='"+CC+"');";	
	
	ResultSet  r=Conexion4MySql.getInstancia().listaCMconsulta2(c);
	System.out.println(r);
	try {
		while (r.next())
		{
			z=r.getInt("IDi");
			System.out.println("Alumno "+ alu+"Curso "+CM +"-"+CC+" IDi z= " +z);
			
		}
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	try {
		r.close();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	return z;
}
}



